package vip.liux.backend.application.service.pay;

import vip.liux.application.dots.PagedResultDto;
import vip.liux.application.dots.PagedResultRequestDto;
import vip.liux.contracts.models.pay.PayDemoOrder;

public interface PayDemoOrderService {
    /**
     * 创建示例订单
     *
     * @param userId 用户编号
     * @param spuId  商品编号
     * @return 编号
     */
    Long createDemoOrder(Long userId, Long spuId);

    /**
     * 获得示例订单
     *
     * @param id 编号
     * @return 示例订单
     */
    PayDemoOrder getDemoOrder(Long id);

    /**
     * 获得示例订单分页
     *
     * @param pageReqVO 分页查询
     * @return 示例订单分页
     */
    PagedResultDto<PayDemoOrder> getDemoOrderPage(PagedResultRequestDto pageReqVO);

    /**
     * 更新示例订单为已支付
     *
     * @param id         编号
     * @param payOrderNo 支付订单号
     */
    void updateDemoOrderPaid(Long id, String payOrderNo);

    /**
     * 发起示例订单的退款
     *
     * @param id     编号
     * @param userIp 用户编号
     */
    void refundDemoOrder(Long id, String userIp);

    /**
     * 更新示例订单为已退款
     *
     * @param id          编号
     * @param refundId    退款编号
     * @param payRefundNo 退款订单号
     */
    void updateDemoOrderRefunded(Long id, String refundId, String payRefundNo);
}
